package rn;

import static org.junit.Assert.*;

import java.sql.Connection;
import java.sql.SQLException;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class SqlAPITest {
	private static SqlAPI sqlapi;
	
	@Before
	public void before() throws NombreFormatoException, EdadFormatoException, SQLException {
		sqlapi = new SqlAPI();
		sqlapi.insertar("22222222", "Guillem", 22);
		sqlapi.insertar("44444444", "Guillem", 22);

	}
	
	@After 
	public void after() {
		sqlapi.cerrarConexion();
	}
	
	@Test (expected = NombreFormatoException.class)
	public void testInsertar1() throws NombreFormatoException, SQLException, EdadFormatoException{
		sqlapi.insertar("11111111", "----------------------------------------------------------------", 20);		
	}
	
	@Test (expected = EdadFormatoException.class)
	public void testInsertar2() throws NombreFormatoException, EdadFormatoException, SQLException {
		sqlapi.insertar("11111111", "Guillem Serra", 201);
	}
	
	@Test (expected = EdadFormatoException.class)
	public void testInsertar3() throws NombreFormatoException, EdadFormatoException, SQLException {
		sqlapi.insertar("11111111", "Guillem Serra", -1);
	}
	
	@Test
	public void testInsertar4() throws NombreFormatoException, EdadFormatoException, SQLException {
		sqlapi.insertar("11111111", "Guillem Serra", 20);
		assertTrue(true);
	}
	
	@Test (expected = DniException.class)
	public void testBorrar1() throws SQLException, DniException {
		sqlapi.borrar("3333333");		
	}
	
	@Test
	public void testBorrar2() throws SQLException, DniException, NombreFormatoException, EdadFormatoException {
		sqlapi.borrar("22222222");
		assertTrue(true);
	}
	
	@Test (expected = DniException.class)
	public void testModificarNombre1() throws DniException, SQLException {
		sqlapi.modificarNombre("33333333", "Guillermito");
	}
	
	@Test 
	public void testModificarNombre2() throws DniException, SQLException {
		sqlapi.modificarNombre("22222222", "guillermito");
		assertTrue(true);
	}

	
	@Test (expected = DniException.class)
	public void testModificarEdad1() throws DniException, SQLException {
		sqlapi.modificarEdad("33333333", 22);
	}
	
	@Test
	public void testModificarEdad2() throws DniException, SQLException {
		sqlapi.modificarEdad("22222222", 22);
	}
	
	@Test (expected = DniException.class)
	public void testGetNom1() throws DniException, SQLException {
		sqlapi.getNom("33333333");
	}

	@Test
	public void testGetNombre2() throws DniException, SQLException {
		String nombre = sqlapi.getNom("44444444");			
		String esperado = "Guillem";
		assertEquals(esperado, nombre);
	}
	
	@Test (expected = DniException.class)
	public void testGetEdad1() throws DniException, SQLException {
		sqlapi.getEdad("33333333");
	}
	
	@Test
	public void testGetEdad2() throws DniException, SQLException {
		int edad = sqlapi.getEdad("22222222");
		assertEquals(22, edad);
	}

}
